/**
 * 类的执行顺序遵循原则：
 * 静态优先 》 父类优先 》 非静态块优先于构造函数
 * 输出结果
 * 我是父类静态代码块
 * 我是子类静态代码块
 * 我是父类非静态代码块
 * 我是父类的构造函数
 * 我是子类非静态代码块
 * 我是子类的构造函数
 */

public class ExecutionSequence {

    public static void main(String[] args) {
        new GeneralClass();
    }

}

class ParentClass {

    static {
        System.out.println("我是父类静态代码块");
    }

    {
        System.out.println("我是父类非静态代码块");
    }

    public ParentClass() {
        System.out.println("我是父类的构造函数");
    }

}

class GeneralClass extends ParentClass {

    static {
        System.out.println("我是子类静态代码块");
    }

    {
        System.out.println("我是子类非静态代码块");
    }

    public GeneralClass() {
        System.out.println("我是子类的构造函数");
    }
}
